
debugger=
user=
rsh_arg=
rcp_arg=
host=$1
shift

for i
do case "$1" in
   -d) debugger=$2; shift; shift
       ;;
   -r) rsh_arg=$2; shift; shift
       ;;
   -c) rcp_arg="-r $2"; shift; shift
       ;;
   -l) user="-l $2"
       xuser="-user $2"; shift; shift
       ;;
   -n) shift
       ;;
   -*) echo "linda_rsh: unknown flag: $1" 1>&2; exit 1
       ;;
   *)  break
       ;;
   esac
done

if [ $debugger ]; then
  dbgname=`basename $debugger`
else
  dbgname=
fi

case "$rsh_arg" in
ssh) xonrsh=/usr/bin/ssh
     ;;
*)  xonrsh=/usr/bin/rsh
    ;;
esac

case "$dbgname" in
   gdb) lcmd=$1; shift
        if [ -f $HOME/.gdbinit ]; then
          cat $HOME/.gdbinit           > /tmp/_linda_rsh.$$
        else
          :                            > /tmp/_linda_rsh.$$
        fi
        echo "handle SIGPOLL nostop"  >> /tmp/_linda_rsh.$$
        echo "set args $*"            >> /tmp/_linda_rsh.$$
        echo "echo When ready to execute, type \"run\" with no arguments\\n" \
                                      >> /tmp/_linda_rsh.$$
        ${LINDA_PATH}bin/linda_rcp $host $rcp_arg $user \
          /tmp/_linda_rsh.$$ /tmp/linda_rsh.$$
        /bin/rm /tmp/_linda_rsh.$$
        exec ${LINDA_PATH}bin/xon $xonrsh $host $xuser \
          xterm -T "${host}:`basename $lcmd`" \
          -n `basename $lcmd` \
          -e $debugger -quiet -nx -x /tmp/linda_rsh.$$ $lcmd
        ;;
   dbx) lcmd=$1; shift
        if [ -f $HOME/.dbxinit ]; then
          cat $HOME/.dbxinit           > /tmp/_linda_rsh.$$
        else
          :                            > /tmp/_linda_rsh.$$
        fi
        echo "ignore io"              >> /tmp/_linda_rsh.$$
        echo "alias lrun \"run $*\""  >> /tmp/_linda_rsh.$$
        ${LINDA_PATH}bin/linda_rcp $host $rcp_arg $user \
          /tmp/_linda_rsh.$$ /tmp/linda_rsh.$$
        /bin/rm /tmp/_linda_rsh.$$
        exec ${LINDA_PATH}bin/xon $xonrsh $host $xuser \
          xterm -T "${host}:`basename $lcmd`" \
          -n `basename $lcmd` \
          -e $debugger -sr /tmp/linda_rsh.$$ $lcmd
        ;;
   pgdbg) lcmd=$1; shift
        if [ -f $HOME/.pgdbgrc ]; then
          cat $HOME/.pgdbgrc           > /tmp/_linda_rsh.$$
        else
          :                            > /tmp/_linda_rsh.$$
        fi
        echo "ignore io"              >> /tmp/_linda_rsh.$$
        echo "alias lrun \"run $*\""  >> /tmp/_linda_rsh.$$
        ${LINDA_PATH}bin/linda_rcp $host $rcp_arg $user \
          /tmp/_linda_rsh.$$ /tmp/linda_rsh.$$
        /bin/rm /tmp/_linda_rsh.$$
        exec ${LINDA_PATH}bin/xon $xonrsh $host $xuser \
          xterm -T "${host}:`basename $lcmd`" \
          -n `basename $lcmd` \
          -e $debugger -s /tmp/linda_rsh.$$ $lcmd
        ;;
   linda_dbx*) lcmd=$1; shift
        exec ${LINDA_PATH}bin/xon $xonrsh $host $xuser \
          xterm -T "${host}:`basename $lcmd`" \
          -n `basename $lcmd` \
          -e $debugger $lcmd $*
        ;;
   *)   case "$rsh_arg" in
          on) exec /usr/bin/on -n $host "$@"
              ;;
          ssh) exec /usr/bin/ssh -x $host $user -n "$@"
              ;;
          *)  exec /usr/bin/rsh $host $user -n "$@"
              ;;
        esac
        ;;
esac
